Service function chains (SFC) provide ordered service functions (SFs) (e.g. firewall, network address translation, intrusion detection, proxy services, etc.) to add valuable services to the network and its users. In the majority of network designs and deployments, network functions are configured as a physical network element. This requires allocation of physical resources to enable the network functions. With the development of virtualization and new services, the physical resources required to support these network functions have increased rapidly.
With large scale services being deployed and customized by customers on an as-needed basis, linking various services requires complex configuration procedures. Furthermore, the ability to chain various services may be limited to specific compatible vendors and/or device types. Managing and maintaining these services has become a great hardship for administrators. As such, enabling new services often requires re-designing all or a significant part of the network in order to create the requisite service chain workflow to incorporate new service functions.
Current approaches to providing and maintaining network service function chains decouple logical chains from a physical network. Software-Defined Networking (SDN) is used to dynamically deploy logical chains to the network by configuring switches with chain-related routing rules. Generally, an SDN Controller inserts SFC routing rules into the switches of the network. The aggregate size of the SDN routing tables grows exponentially in relation to the length of the chains (e.g. 100 Firewalls and 100 Deep packet inspectors creates about 10,000 rules). Furthermore, ternary content-addressable memory (TCAM), typically used for SDN logical chains, has design limitations and is very expensive. Some current approaches also have difficulty handling SFC Spiral, where a single service function chain employs the same service function more than once. These approaches also require that the network switches are reconfigured when a logical chain is modified, even if the underlying SFs do not change (e.g. a reorder or reroute operation). Therefore, a more efficient, flexible, and manageable approach is needed for creating and managing portable service function chains.